// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Pin Up Pin Up Casino Pin Up Bet Pin Up Yukle Pin Up Az Pin Up Online Pin Up Casino Yukle – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Pin Up Pin Up Casino Pin Up Bet Pin Up Yukle Pin Up Az Pin Up Online Pin Up Casino YukleBaşqa yolla de uma gedə bilərsiniz – Pin Up Azerbaycan formal resursundan istifadə edin.
Proseduru tamamladıqdan sonra smartfonunuz ötrü hazır bir müraciət alacaqsınız. İstədiyiniz müddət vahid qumarxana açaraq lisenziyalı slot maşınlarından istifadə edə bilərsiniz. Üçüncü üz inkişaf etdiricilərindən quraşdırmanı təsdiqləməyi unutmayın. Bu edilməyibsə, cara Pinup APK-nı meado bir sənəd qədər tanıyır və quraşdırılmasına mane ola bilər.
Smartfon və ya planşetiniz görə Android proqramını yıxmaq üçün bukmeker kontorunun xarici saytına daxil olmalısınız.
Bukmeker kontorunun Pin-Up artan bonuslar və səxavətli pulsuz mərclər ilə e-idman və ənənəvi turnirlərə mərc eləmək üçün qanuni bukmekerdir.
Pin Up fish hunter 360 saytındakı xəttə 40-dan daha idman növü daxildir.
Onu kliklədikdən sonra poçtdan artıq oyun hesabı yaradılan bukmeker kontorunun formal portalına yönləndirilirsiniz.
Sayt pin up casino -də 40-dan ən disiplin seçimi var, döyüşlər bədii yayımlarla müşayiət olunur və matç mərkəzi də həyata keçirilib.
Bu o deməkdir ki, müştərilərin identifikasiyası QIWI cüzdanının ən təmtəraqlı statusunu əldə etməklə bağlıdır.
Siz rəsmi Pin-Up Casino üzrə veb-saytında oynamağa qeydiyyatdan keçdirilərsiniz və ofis dərəcəsində təmin olunan Pin-Up Casino çıxarılır? Oyunçulara əmanət və casino rəyi idmanında müxtəlif metodu və məclislərinə dəstək verilir. Onlar üçün ısınmanı idmana durmaq və” “kazino ilə yükləməyə ianə eləmək lap qırmızı))))sla-lığmaqla tutqun azərbaycan pinup bet olduğum vahid mövzudur. Pin-Up On line casino platformasında pulsuz qeydiyyatdan keçməklə və depozit etməklə poker oyunları oynamaq imkanlarına əhl olarsınız. Hər bəsdir kəmiyyət vəsaitlərinizlə oynaya bilərsiniz və dəstəyi üzrədəki məlumatlarına etibar edə bilərsiniz.
Pin Up Yükle Apk Indi Foretex Attires Limited
Əsaslarla qaydaları dəqiq və aydın edilmiş durda saxlamaq ötrü əmanətçidir. Bu saytda Pin-Up Casino saytının müxtəlif oyunlarını oynayaraq para qazana bilərsiniz. Saytın müxtəlif təsadüfi oyunlarını oynamaq və aparmaq ötrü lap sərbəst və əlverişli yoludur.
Şirkət iPhone və en este momento Android üçün uyğunlaşdırılmış cihazlarla qarşılıqlı əlaqəni dəstəkləyir.
Kazinonun təklif etdiyi bonuslar çəkmək şansınızı artırmağa imkan verir.
Pin Up casinosu fikir etmiş oyunçular 700 manata kəmiyyət ilkin depozitdə 100% akkriual formasında sakit Pin Up bonus şəhla biləcəklər.
Qısası, Pin Up-un təklif etdiyi bazarların siyahısı bildiyiniz hər hansı strategiya üçün istifadə oluna bilər.
Bu zaman digər metodlar kimi, adətən, 15 dəqiqədən ən vaxt tələb olunmur.
Oyunların siyahısı ilə oynaş olmaq üçün istifadəçi display rejimini seçə bilər.
Pin-Up kazinosunun üstünlüklərinə siyahıda təklif olunan hər bir slot maşını üçün demo versiyasının olması daxildir. İmkanları yoxlamaq üçün simulyatorun önizləməsinin üzərinə keçmək lazımdır, “Demo” düyməsini qicamaq lazımdır. Bu, saytın mobil versiyasında emulyatorların iti yüklənməsini təmin edir. Proqram təminatı öz platforması, Evolution Play, Pragmatic Play-dən inkişaflar əsasında təklif olunur.
Pin Up Yukle Azerbaycan Android ötrü Pinup Apk Yükləyin 202 Zika Industries Ltd
Bu, promotion kodumuzdan istifadə edərək sizi yaxşı bonuslarla mükafatlandıracaq. Məsələn, saytın masaüstü versiyası noutbuk və ya kompüterlə mərc edənlər üçün çox asudə olacaq. Bu, ləvazimat resurslarından istifadə baxımından tələbkar deyil və tez daxil olmaq üçün hər vaxt iş masanıza vərəq qısayolu izafi edə bilərsiniz. Sertifikatlaşdırılmış slotlarda mütləq əvəzsiz sikkələr üçün mərc rejimi va. Pin Up casino online həmçinin kazinonun w tamtym miejscu nüsxəsi mülk, onu barmaqlıq üzərindən kompüterdən yükləmək olar.
Mövcud əyləncələrin siyahısı Video slotlar, bədii kazino, stolüstü oyunlar, idman mərcləri, canlı mərclər, virtual idman Mövcud ödəniş sistemləri Lazım gələrsə, bu sertifikatın təfərrüatlarını oxşar səhifədə ötrü bilərsiniz. Bunu etmək üçün qurumun əsl səhifəsindəki komissiya simgəsini vurmalısınız. Slotlara keçid zamanı müştərinin canlı dilerləri olan komandalar pin-up.cazino-ya köçürüləcək.
Roulette Oynamaq
Smartfon və ya planşetiniz ötrü Android proqramını salmaq üçün bukmeker kontorunun xarici saytına iç olmalısınız. Qumarla bağlı başqa proqram olmadığı qədər bu proqram Google Play Marketdə mövcud deyil. Bundan izafi, onlayn bukmeker kontoru yüksək xətt və gur ödənişləri ilə rəqibləri ilə müsbət münasibət edir. Şirkət Azərbaycan ərazisində dünyavi lisenziya əsasında fəaliyyət göstərir. Saytın funksionallığı və mobil qurğular görə proqramlar” “ən balaca detallarına kəmiyyət düşünülmüşdür.
Başlamaq üçün tam adınızı, yaşınızı, cinsinizi, dolanacaq ölkənizi, şəhərinizi, ünvanınızı və poçt indeksinizi iç edərək anket doldurmağı təklif edirik.
Bonusdan istifadə edərək qazanılan ümumən vəsaitlər mükafatı x50 mərc ilə sürüşdürərək ard götürülə bilər.
Pin-up casino gir axir ölçü sadə hazırlanır ki, oyunçu çaşqınlıq şəhla bilməz.
Oyunun RTP-si nə kəmiyyət təntənəli olarsa, qalibiyyət halında ödənişlər vahid o say cah-calalli olar.
Təbii ki, saytın ümumən xüsusiyyətləri rəsmi ünvanda olduğu kimi işləyəcəkdir. Pin Up Casino indir, saytın mobil versiyasından istifadə edə və ya kompüterinizdə oynaya bilərsiniz. Gələcəkdə problemlərin qarşısını götürmək üçün vur-tut real məlumatları təqdim etmək tövsiyə olunur.
Pin Up-dan Necə Pul Çıxarmaq Olar?
Pin Up 360 canlı casino bölməsində yerləşən rulet versiyasına xüsusi hörmətcillik yetirilməlidir pin up casino aviator. Oyunçunun, bu səhifə və ya formal veb sayt -up.casino olsun, etibarlı bir mənbədən kazinodan vahid sənəd yükləməsi halında qorxacaq vahid şey yoxdur. Artıq 1 dəqiqədən sonra, yuxarıdakı təlimatlara əlaqəli olaraq yükləməyə və quraşdırmağa başlayırsa, Pin Up mobil tətbiqi oyunçu cihazında işə salına bilər.
Iphone istifadə etsəniz, o müddət yeniləmə daha yüngül əsas verəcək, belə ki, Bu App Store vasitəsilə avtomatik olaraq aparici verir. Bu dəstə aparatlarda birinci bet məbləğini min dönüm üstələyən ödənişləri qazana bilərsiniz. Hal-hazırda şirkət RTP-dən tutmuş iz və reellərin sayına miqdar müxtəlif göstəricilərlə 4000-dən ən slot təqdim edir. Pin Up 360 obrazli casino bölməsində yerləşən rulet versiyasına şəxsi diqqət yetirilməlidir. Bundan əlavə, oyunun bu versiyası ilə provayder tərəfindən tweaking narahat olmayacaq.